/**
 * @Description: 该文件提供与日志相关的接口，不用创建一个journalStore这个东西，直接从taskStore中分析就可以了
 * @author Fengli
 * @date 5/4/19
*/
import {taskDb} from '@/util/dao/ConfigDB'
import {getWeekNumber, getWeekStartDate} from '@/util/ApplicationUtil'
import global from '@/util/const/global'

// todo 增

// todo 删

// todo 改

// todo 查
/**
 * 查询当天所以任务
 * @param day 具体的某一天
 * @returns {Dexie.Promise<Array<T>>}
 */
export function queryDaySummary (day) {
  return taskDb.taskStore.where({ 'date': day }).filter((item) => {
    return !(item.del)
  }).toArray()
}

/**
 * 获取某一天的未完成任务列表
 * @param day 某一天
 */
export function queryNotDoneTask (day) {
  return taskDb.taskStore.where({ 'date': day }).filter((item) => {
    return (!item.del && !item.isDone)
  }).toArray()
}

/**
 * 查询某一天所有的日志
 * @param day
 */
export function queryCount (day) {
  let all = taskDb.taskStore.where({ 'date': day }).filter((item) => {
    return !(item.del)
  }).count()
  let done = taskDb.taskStore.where({ 'date': day }).filter((item) => {
    return !(item.del || !item.isDone)
  }).count()
  return {'all': all, 'done': done}
}

/**
 * 给一个日子，判断它是第几周，并返回每一天的记录
 * ['某天', '任务量', '已完成任务量', '已完成的任务列表']
 * @param day
 * @returns {[][]}
 */
export async function getWeekData (day) {
  let data = []
  // 获取某一天的开始时间和结束时间
  let weekNumber = getWeekNumber(day)
  let startDay = getWeekStartDate(day.getFullYear(), weekNumber)
  for (let i = 0; i < 7; ++i) {
    let now = new Date(startDay.getFullYear(), startDay.getMonth(), startDay.getDate() + i)
    // 查询每一天的信息
    let w = [now.format(global.formatDate2)]
    let result = queryCount(now.format(global.formatDate2))
    // 任务量
    await result.all.then((response) => {
      w.push(response)
    })
    // w.push(result.all)
    // 已完成任务量
    await result.done.then((response) => {
      w.push(response)
    })
    // w.push(result.done)
    // 已完成的任务条数，通过这个计算工作时间
    w.push(w[1] - w[2])

    // 将每天的信息存到data里面取
    data.push(w)
  }
  return data
}
